package presentation;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import metier.ArticleManager;
import metier.ClientManager;
import metier.ParamManager;
import metier.UtilisateurManager;
import modele.Utilisateur;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import utils.Utilitaire;


/**
 * Controller - Spring
 * 
 * @author Loiane Groner
 * http://loianegroner.com (English)
 * http://loiane.com (Portuguese)
 */
@Controller
public class ParamController  {
	
	@RequestMapping(value="/moduleprofils/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewModuleprofilsByProfil(@RequestParam("idProfil") int idProfil,Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getModuleprofils(idProfil);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/uniteventes/view.action")
	public @ResponseBody Map<String,? extends Object> viewUniteventes(@RequestParam("start") int start, @RequestParam("limit") int limit,Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getUniteventes(start,limit);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	//Taxe
	@RequestMapping(value="/taxes/view.action")
	public @ResponseBody Map<String,? extends Object> viewTaxes(@RequestParam("start") int start, @RequestParam("limit") int limit,Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getTaxes(start,limit);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/taxes/create.action")
	public @ResponseBody Map<String,? extends Object> createtaxes(@RequestParam Object data,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List d	=	ParamManager.ajouterTaxes(data);
				int total=d.size();
				return Utilitaire.getMap(d,total);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/taxes/update.action")
	public @ResponseBody Map<String,? extends Object> updatetaxes(@RequestParam Object data,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List d	=	ParamManager.modfierTaxes(data);
				int total=d.size();
				return Utilitaire.getMap(d,total);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/taxes/delete.action")
	public @ResponseBody Map<String,? extends Object> deletetaxes(@RequestParam Object data,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				if (ParamManager.supprimerTaxes(data))
					return Utilitaire.getMap("Les objets sont supprimer");
				else
					return Utilitaire.getModelMapError("Erreur de suppression");
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	//---------------------------------------------------
	@RequestMapping(value="/catcomptas/view.action")
	public @ResponseBody Map<String,? extends Object> viewCatcomptas(@RequestParam("start") int start, @RequestParam("limit") int limit,Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getCatcomptas(start,limit);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/profils/view.action")
	public @ResponseBody Map<String,? extends Object> viewProfils(@RequestParam("start") int start, @RequestParam("limit") int limit,Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getProfils(start,limit);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/modules/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewModules(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getAllModules();
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/moduleprofils/view.action")
	public @ResponseBody Map<String,? extends Object> viewModuleprofils(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	UtilisateurManager.getProdilsUserBySession(sesUser);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/modules/menu.action")
	public @ResponseBody Map<String,? extends Object> menuModule(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	UtilisateurManager.getProdilsUserBySession(sesUser);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/comptegs/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewAllCompteG(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data=ParamManager.getAllCompteg();
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/taxes/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewAllTaxe(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ArticleManager.getAllTaxes();
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/catcomptas/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewAllCatCompta(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getAllCatCompta();
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/profils/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewAllProfil(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ParamManager.getAllProfils();
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
}
